home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / mail / pine3.96.tar.gz / pine3.96.tar / pine3.96 / pine / osdep / codepage.dos < prev    next >
Text File  |  1996-06-06  |  25KB  |  465 lines

  1. #line 2 "osdep/codepage.dos"
  2.  
  3.  
  4. /*----------------------------------------------------------------------
  5.     Translation tables to map DOS codepages to ISO-8859-1 charsets and
  6.     back.
  7.  
  8.  Note: These tables were basically lifted from Kermit 3.11 and
  9.        the textps.c program also distributed from Columbia U.
  10.   ----------------------------------------------------------------------*/
  11. /*
  12.  * Map from ISO 8859-1 Latin-1 to Code Page 437
  13.  */
  14. unsigned char L1cp437[] = {
  15.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  16.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  17.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  18.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  19.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  20.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  21.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  22. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  23. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  24. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  25.  32, 173, 155, 156,  15, 157, 124,  21,  34,  64, 166, 174, 170, 196,  63,  45,
  26. 248, 241, 253,  51,  39, 230,  20, 250,  44,  49, 167, 175, 172, 171,  63, 168,
  27.  65,  65,  65,  65, 142, 143, 146, 128,  69, 144,  69,  69,  73,  73,  73,  73,
  28.  68, 165,  79,  79,  79,  79, 153,  88,  79,  85,  85,  85, 154,  89,  63, 225,
  29. 133, 160, 131,  97, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
  30.  63, 164, 149, 162, 147, 111, 148, 246, 111, 151, 163, 150, 129, 121,  63, 152
  31. };
  32.  
  33.  
  34. /*
  35.  * Map from ISO 8859-1 Latin-1 to Code Page 850
  36.  */
  37. unsigned char L1cp850[] = {
  38.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  39.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  40.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  41.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  42.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  43.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  44.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  45. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  46. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  47. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  48.  32, 173, 189, 156, 207, 190, 221, 245, 249, 184, 166, 174, 170, 240, 169, 238,
  49. 248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168,
  50. 183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216,
  51. 209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 225,
  52. 133, 160, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
  53. 208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152
  54. };
  55.  
  56.  
  57. /*
  58.  * Map from ISO 8859-1 Latin-1 to Code Page 860
  59.  */
  60. unsigned char L1cp860[] = {
  61.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  62.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  63.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  64.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  65.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  66.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  67.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  68. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  69. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  70. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  71.  32, 173, 155, 156,  15,  89, 124,  21,  34,  64, 166, 174, 170, 196,  63,  45,
  72. 248, 241, 253,  51,  39, 230,  20, 250,  44,  49, 167, 175, 172, 171,  63, 168,
  73. 145, 134, 143, 142,  65,  65,  65, 128, 146, 144, 137,  69, 139, 152,  73,  73,
  74.  68, 165, 169, 159, 140, 153,  79,  88,  79, 157, 150,  85, 154,  89,  63, 225,
  75. 133, 160, 131, 132,  97,  97,  97, 135, 138, 130, 136, 101, 141, 161, 105, 105,
  76.  63, 164, 149, 162, 147, 148, 111, 246, 111, 151, 163, 117, 129, 121,  63, 121
  77. };
  78.  
  79.  
  80. /*
  81.  * Map from ISO 8859-1 Latin-1 to Code Page 863
  82.  */
  83. unsigned char L1cp863[] = {
  84.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  85.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  86.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  87.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  88.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  89.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  90.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  91. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  92. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  93. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  94.  32,  63, 155, 156, 152,  89, 160, 143, 164,  64,  97, 174, 170, 196,  63, 167,
  95. 248, 241, 253, 166, 161, 230, 134, 250, 165,  49, 111, 175, 172, 171, 173,  63,
  96. 142,  65, 132,  65,  65,  65,  65, 128, 145, 144, 146, 148,  73,  73, 168, 149,
  97.  68,  78,  79,  79, 153,  79,  79,  88,  79, 157,  85, 158, 154,  89,  63, 225,
  98. 133,  97, 131,  97,  97,  97,  97, 135, 138, 130, 136, 137, 105, 105, 140, 139,
  99.  63, 110, 111, 162, 147, 111, 111, 246, 111, 151, 163, 150, 129, 121,  63, 121
  100. };
  101.  
  102.  
  103. /*
  104.  * Map from ISO 8859-1 Latin-1 to Code Page 865
  105.  */
  106. unsigned char L1cp865[] = {
  107.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  108.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  109.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  110.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  111.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  112.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  113.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  114. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  115. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  116. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  117.  32, 173,  63, 156, 175,  89, 124,  21,  34,  64, 166, 174, 170, 196,  63, 196,
  118. 248, 241, 253,  51,  39, 230,  20, 250,  44,  49, 167,  63, 172, 171,  63, 168,
  119.  65,  65,  65,  65, 142, 143, 146, 128,  69, 144,  69,  69,  73,  73,  73,  73,
  120.  68, 165,  79,  79,  79,  79, 153,  88, 157,  85,  85,  85, 154,  89,  63, 225,
  121. 133, 160, 131,  97, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
  122.  63, 164, 149, 162, 147, 111, 148, 246, 155, 151, 163, 150, 129, 121,  63, 152
  123. };
  124.  
  125.  
  126. /*
  127.  * Map from ISO 8859-5 Latin-Cyrillic to Code Page 866
  128.  */
  129. unsigned char L5cp866[] = {
  130.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  131.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  132.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  133.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  134.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  135.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  136.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  137. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  138. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  139. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  140. 255, 240,  63,  63, 242,  83,  73,  79,  74,  63,  63,  72,  75,  45, 246,  63,
  141. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  142. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  143. 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
  144. 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
  145. 252, 241,  63,  63, 243, 115, 105, 245, 106,  63,  63, 104, 107,  21, 247,  63
  146. };
  147.  
  148.  
  149. /*
  150.  * Map from ISO 8859-2 Latin-2 to Code Page 852
  151.  */
  152. unsigned char L2cp852[] = {
  153.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  154.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  155.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  156.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  157.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  158.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  159.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  160. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  161. 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
  162. 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
  163. 170, 164, 244, 157, 207, 149, 151, 245, 249, 230, 184, 155, 141, 240, 166, 189,
  164. 248, 165, 242, 136, 239, 150, 152, 243, 247, 231, 173, 156, 171, 241, 167, 190,
  165. 232, 181, 182, 198, 142, 145, 143, 128, 172, 144, 168, 211, 183, 214, 215, 210,
  166. 209, 227, 213, 224, 226, 138, 153, 158, 252, 222, 233, 235, 154, 237, 221, 225,
  167. 234, 160, 131, 199, 132, 146, 134, 135, 159, 130, 169, 137, 216, 161, 140, 212,
  168. 208, 228, 229, 162, 147, 139, 148, 246, 253, 133, 163, 251, 129, 236, 238, 250,
  169. };
  170.  
  171. /*
  172.  * Map from ISO 8859-2 Latin-2 to Code Page Kamenicky (Czech/Slovak)
  173.  */
  174. unsigned char L2cp895[] = {
  175.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  176.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  177.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  178.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  179.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  180.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  181.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  182. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  183. 200, 129, 233, 239, 132, 207, 171, 232, 236, 204, 138, 205, 140, 141, 142, 193,
  184. 201, 190, 174, 147, 148, 211, 249, 218, 253, 153, 154, 169, 156, 221, 216, 187,
  185. 225, 237, 243, 250, 242, 210, 217, 167, 185, 155, 170, 134, 172, 173, 146, 175,
  186. 176, 177, 178, 179, 180, 181, 182, 183, 184, 168, 186, 159, 188, 189, 145, 191,
  187. 192, 143, 194, 195, 196, 197, 198, 199, 128, 144, 202, 203, 137, 139, 206, 133,
  188. 208, 209, 165, 149, 212, 213, 214, 215, 158, 166, 151, 219, 220, 157, 222, 223,
  189. 224, 160, 226, 227, 228, 229, 230, 231, 135, 130, 234, 235, 136, 161, 238, 131,
  190. 240, 241, 164, 162, 244, 245, 246, 247, 169, 150, 163, 251, 252, 152, 254, 255
  191. };
  192.  
  193.  
  194. /*
  195.  * Translation table to map IBM Code Page 437 to Latin1
  196.  *
  197.  * The comments from textps.c read:
  198.  *
  199.  *  Line- and box-drawing characters are simulated with
  200.  *  dashes, bars, and plus signs.  Black and gray blobs (fill characters)
  201.  *  are replaced by X's.  Peseta is shown as P.  Greek letters that don't
  202.  *  exist in CourierLatin1 are shown as ?.  Untranslatable math symbols are
  203.  *  shown as ?.
  204.  */
  205. unsigned char cp437L1[] = {
  206.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  207.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  208.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  209.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  210.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  211.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  212.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  213. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  214. 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
  215. 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 162, 163, 165,  80, 151,
  216. 225, 237, 243, 250, 241, 209, 170, 186, 191,  43, 172, 189, 188, 161, 171, 187,
  217.  88,  88,  88, 124,  43,  43,  43,  43,  43,  43, 124,  43,  43,  43,  43,  43,
  218.  43,  43,  43,  43,  45,  43,  43,  43,  43,  43,  43,  43,  43,  45,  43,  43,
  219.  43,  43,  43,  43,  43,  43,  43,  43,  43,  43,  43,  88,  88,  88,  88,  88,
  220.  63, 223,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  221.  63, 177,  63,  63,  63,  63,  63,  63, 176, 134, 135,  63, 110, 178,  88, 160
  222. };
  223.  
  224.  
  225. /*
  226.  * Translation table to convert IBM CODE PAGE 850 to Latin1
  227.  *
  228.  * The comments from textps.c read:
  229.  *
  230.  *  IBM Code Page 850.  Line- and box-drawing characters are simulated with 
  231.  *  dashes, bars, and plus signs.  Black blobs are replaced by X's.
  232.  */
  233. unsigned char cp850L1[] = {
  234.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  235.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  236.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  237.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  238.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  239.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  240.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  241. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  242. 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
  243. 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 248, 163, 216, 215, 151,
  244. 225, 237, 243, 250, 241, 209, 170, 186, 191, 174, 172, 189, 188, 161, 171, 187,
  245.  88,  88,  88, 124,  43, 193, 194, 192, 169,  43, 124,  43,  43, 162, 165,  43,
  246.  43,  43,  43,  43,  45,  43, 227, 195,  43,  43,  43,  43,  43,  45,  43, 164,
  247. 240, 208, 202, 203, 200, 154, 205, 206, 207,  43,  43,  88,  88, 166, 204,  88,
  248. 211, 223, 212, 210, 245, 213, 181, 254, 222, 218, 219, 217, 253, 221, 175, 180,
  249. 173, 177,  61, 190, 182, 167, 247, 184, 176, 168, 134, 185, 179, 178,  88, 160
  250. };
  251.  
  252.  
  253. /*
  254.  * Map from ISO 8859-1 Latin-1 to Code Page 860
  255.  */
  256. unsigned char cp860L1[] = {
  257.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  258.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  259.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  260.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  261.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  262.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  263.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  264. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  265. 199, 252, 233, 226, 227, 224, 193, 231, 234, 202, 232, 204, 212, 236, 195, 194,
  266. 201, 192, 200, 244, 245, 242, 218, 249, 205, 213, 220, 162,  63, 217,  63, 21,
  267. 225, 237, 243, 250, 241, 209, 170, 186, 191, 210, 172, 189, 188, 161, 171, 187,
  268.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  269.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  270.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  271.  63, 223,  63,  63,  63,  63, 181,  63,  63,  63,  63,  63,  63, 248,  63,  63,
  272.  63, 177,  63,  63,  63,  63, 247,  63, 176, 183, 183,  63,  63, 178,  63,  63 
  273. };
  274.  
  275.  
  276. /*
  277.  * Map from ISO 8859-1 Latin-1 to Code Page 863
  278.  */
  279. unsigned char cp863L1[] = {
  280.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  281.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  282.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  283.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  284.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  285.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  286.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  287. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  288. 199, 252, 233, 226, 194, 224, 182, 231, 234, 235, 232, 239, 238,  61, 192, 167,
  289. 201, 200, 202, 244, 203, 207, 251, 249, 164, 212, 220, 162,  63, 217, 219,  63,
  290. 166, 180, 243, 250, 168, 184, 179, 175, 206,  63, 172, 189, 188, 190, 171, 187,
  291.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  292.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  293.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  294.  63, 223,  63,  63,  63,  63, 181,  63,  63,  63,  63,  63,  63, 248,  63,  63,
  295.  63, 177,  63,  63,  63,  63, 247,  63, 176, 183, 183,  63,  63, 178,  63,  63
  296. };
  297.  
  298.  
  299. /*
  300.  * Map from ISO 8859-1 Latin-1 to Code Page 865
  301.  */
  302. unsigned char cp865L1[] = {
  303.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  304.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  305.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  306.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  307.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  308.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  309.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  310. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  311. 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
  312. 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 248,  63, 216,  63,  63,
  313. 226, 237, 243, 250, 241, 209, 170, 186, 191,  63, 172, 189, 188, 161, 171, 164,
  314.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  315.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  316.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  317.  63, 223,  63,  63,  63,  63, 181,  63,  63,  63,  63,  63,  63, 248,  63,  63,
  318.  63, 177,  63,  63,  63,  63, 247,  63, 176, 183, 183,  63,  63, 178,  63,  63
  319. };
  320.  
  321.  
  322. /*
  323.  * Map from ISO 8859-1 Latin-5 to Code Page 866
  324.  */
  325. unsigned char cp866L5[] = {
  326.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  327.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  328.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  329.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  330.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  331.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  332.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  333. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  334. 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  335. 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
  336. 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
  337.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  338.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  339.  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,
  340. 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
  341. 161, 241, 164, 244, 167, 247, 174, 254,  63,  63,  63,  63, 240,  63,  63, 160
  342. };
  343.  
  344. /*
  345.  * Map from ISO 8859-2 Latin-2 to Code Page 852
  346.  */
  347. unsigned char cp852L2[] = {
  348.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  349.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  350.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  351.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  352.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  353.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  354.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  355. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  356. 199, 252, 233, 226, 228, 249, 230, 231, 179, 235, 213, 245, 238, 172, 196, 198,
  357. 201, 197, 229, 244, 246, 165, 181, 166, 182, 214, 220, 171, 187, 163, 215, 232,
  358. 225, 237, 243, 250, 161, 177, 174, 190, 202, 234, 160, 188, 200, 186,   0,   0,
  359.   0,   0,   0,   0,   0, 193, 194, 204, 170,   0,   0,   0,   0, 175, 191,   0,
  360.   0,   0,   0,   0,   0,   0, 195, 227,   0,   0,   0,   0,   0,   0,   0, 164,
  361. 240, 208, 207, 203, 239, 210, 205, 206, 236,   0,   0,   0,   0, 222, 217,   0,
  362. 211, 223, 212, 209, 241, 242, 169, 185, 192, 218, 224, 219, 253, 221, 254, 180,
  363. 173, 189, 178, 183, 162, 167, 247, 184, 176, 168, 255, 251, 216, 248,   0,   0
  364. };
  365.  
  366. /*
  367.  * Map from ISO 8859-2 Latin-2 to Code Page Kamenicky (Czech/Slovak)
  368.  */
  369. unsigned char cp895L2[] = {
  370.   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  371.  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  372.  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  373.  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  374.  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  375.  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  376.  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  377. 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
  378. 200, 129, 233, 239, 132, 207, 171, 232, 236, 204, 138, 205, 140, 141, 142, 193,
  379. 201, 190, 174, 147, 148, 211, 249, 218, 253, 153, 154, 169, 156, 221, 216, 187,
  380. 225, 237, 243, 250, 242, 210, 217, 167, 185, 248, 170, 171, 172, 173, 174, 175,
  381. 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
  382. 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
  383. 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
  384. 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
  385. 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
  386. };
  387.  
  388.  
  389. /*----------------------------------------------------------------------
  390.     Return the specified file's contents in a translation array
  391.  
  392.   Args: file name to open
  393.  
  394.   Result: Returns array of unsigned char
  395.  
  396.   ----------------------------------------------------------------------*/
  397. unsigned char *
  398. read_xtable(fname)
  399.     char *fname;
  400. {
  401.     FILE *fp;
  402.     unsigned char *cp;
  403.     int  c, i = 0;
  404.  
  405.     if(fname && (fp = fopen(fname, "r"))){
  406.     cp = (unsigned char *)fs_get(256 * sizeof(unsigned char));
  407.  
  408.     while(fscanf(fp, "%d ", &c) == 1 && i < 256)
  409.       cp[i++] = (unsigned char)c;
  410.  
  411.     fclose(fp);
  412.  
  413.     if(i != 256){        /* table MUST be correct size */
  414.         q_status_message1(SM_ORDER,2,2,"Translation table \"%s\" too small",
  415.                   fname);
  416.         display_message('x');
  417.         fs_give((void **)&cp);
  418.     }
  419.  
  420.     return(cp);
  421.     }
  422.     else
  423.       return(NULL);
  424. }
  425.  
  426.  
  427. /*----------------------------------------------------------------------
  428.     Return the DOS version number
  429.  
  430.   Args: none.
  431.  
  432.   Result: Returns long containing major version in low-order byte, 
  433.       and the minor version in the high-order byte.
  434.  
  435.   ----------------------------------------------------------------------*/
  436. unsigned int
  437. dos_version()
  438. {
  439.     union REGS rg;
  440.  
  441.     rg.x.ax = 0x3000;            /* Have DOS report version num  */
  442.     intdos(&rg, &rg);
  443.     return(rg.x.ax);
  444. }
  445.  
  446.  
  447. /*----------------------------------------------------------------------
  448.     Return the active Global Code Page value
  449.  
  450.   Args: none.
  451.  
  452.   Result: Returns integer value corresponding to active code page
  453.  
  454.   ----------------------------------------------------------------------*/
  455. int
  456. dos_codepage()
  457. {
  458.    union REGS rg;
  459.  
  460.    rg.h.ah = 0x66;        /* DOS int function to get/set code page */
  461.    rg.h.al = 0x01;        /* sub-function to get code page */
  462.    intdos(&rg, &rg);
  463.    return(rg.x.bx);        /* returned in bx */
  464. }
  465.